package cn.e4j.modular.system.mapper;

import cn.e4j.core.dto.impl.Dto;
import cn.e4j.modular.system.entity.SysRole;
import cn.e4j.modular.system.entity.SysUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户资料表 Mapper 接口
 * </p>
 *
 * @author wenchuan.li
 * @since 2018-12-02
 */
public interface SysUserMapper extends BaseMapper<SysUser> {

    /**
     * 通过账号获取用户
     */
    SysUser getByAccount(@Param("account") String account);

    /**
     * 查询用户列表
     */
    List<Map<String, Object>> listUsersPage(@Param("page") Page<Object> page, @Param("dto") Dto dto);

    /**
     * 查询用户列表
     */
    List<SysUser> listUsersExports(@Param("dto") Dto dto);

    /**
     * 获取用户关联的角色
     */
    List<Map<String, Object>> listUserRoles(@Param("userid") String userid);

    /**
     * 逻辑删除用户
     */
    void delUser(@Param("map")Map<String,String> map);

    /**
     * 查询销售渠道列表
     */
    List<Map<String, Object>> listGwaesExport(@Param("dto") Dto dto);

    /**
     * 获取用户关联的销售渠道
     */
    List<Map<String, Object>> listUserGwaes(@Param("userid") String userid);

    /**
     * 查询行业一级分类列表
     */
    List<Map<String, Object>> listGwbwsExport(@Param("dto") Dto dto);

    /**
     * 获取用户关联的行业一级分类
     */
    List<Map<String, Object>> listUserGwbws(@Param("userid") String userid);

    /**
     * 获取用户的资料
     * @param ID
     * @return
     */
    Dto getUser(@Param("ID") String ID);

    /**
     * 校验手机号
     * @param dto
     * @return
     */
    Dto checkCellPhone(@Param("dto") Dto dto);

    /**
     * 保存新密码
     * @param dto
     * @return
     */
    void saveNewPassword(@Param("dto") Dto dto);

    /**
     * 获取当前用户的类型对应的角色
     * @param dto
     * @return
     */
    Dto getUserRole(@Param("dto") Dto dto);

    /**
     * 删除用户角色
     * @param dto
     * @return
     */
    void deleteUserRole(@Param("dto") Dto dto);

    /**
     * 获取用户总数
     * @return
     */
    int getUserCount();

}
